library(tidyverse)
Registered S3 method overwritten by 'rvest':
  method            from
  read_xml.response xml2
── Attaching packages ────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
βœ” ggplot2 3.1.0       βœ” purrr   0.3.2  
βœ” tibble  2.1.1       βœ” dplyr   0.8.0.1
βœ” tidyr   0.8.3       βœ” stringr 1.4.0  
βœ” readr   1.3.1       βœ” forcats 0.4.0  
── Conflicts ───────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
βœ– dplyr::filter() masks stats::filter()
βœ– dplyr::lag()    masks stats::lag()
library(plotly)
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 methods overwritten by 'htmltools':
  method               from         
  print.html           tools:rstudio
  print.shiny.tag      tools:rstudio
  print.shiny.tag.list tools:rstudio
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: β€˜plotly’

The following object is masked from β€˜package:ggplot2’:

    last_plot

The following object is masked from β€˜package:stats’:

    filter

The following object is masked from β€˜package:graphics’:

    layout
getStarts <- function(d){
  s = d %>% select(Stage, Nodes, Time, Tasks) %>% 
    group_by(Stage, Nodes) %>% 
    summarise(Start=min(Time), Tasks=min(Tasks)) %>% arrange(Start)
  return(s)
}
RESEARCH_HOME = "/home/and/Documents/PhD/Research"
lines = readLines(paste0(RESEARCH_HOME, "/Scripts/Misc/tmp/monitor2.txt"))
lines = lines[grepl("|", lines)]
monitor = as_tibble(lines) %>%
  separate(value, into=c("Timestamp", "Time", "ID", "Nodes", "Cores", "Node", "Stage", "RDDs", "Tasks", "Times", "Load"), sep="\\|") %>%
  separate(ID, into=c(NA, NA, "ID"), sep="-") %>%
  select(ID, Time, Nodes, Stage, RDDs, Tasks, Load) %>%
  mutate(Time=as.numeric(Time), RDDs=as.numeric(RDDs), Tasks=as.numeric(Tasks), Load=as.numeric(Load)) %>%
  group_by(ID, Time, Nodes, Stage) %>% summarise(RDDs=mean(RDDs), Tasks=mean(Tasks), Load=mean(Load))
Calling `as_tibble()` on a vector is discouraged, because the behavior is likely to change in the future. Use `tibble::enframe(name = NULL)` instead.
This warning is displayed once per session.
d = monitor %>% filter(ID == "0051" || ID == "0052" || ID == "0053") %>% ungroup %>% 
  select(Time, Tasks, Nodes, Stage) %>% 
  mutate(Stage=factor(Stage), Nodes=factor(Nodes), Time=floor(Time*10.0)/10.0) %>% 
  group_by(Nodes, Stage, Time) %>%
  summarise(Tasks=mean(Tasks)) %>%
  arrange(Time, Tasks) 
head(d, n=30)
p = ggplot(data = d, aes(x = Time, y = Tasks, group = 1)) +
  geom_line(aes(color = Nodes, linetype = Nodes)) +
  geom_point(data = getStarts(d), aes(x=Start, y=Tasks, group=Nodes, color=Nodes
                                      , text = paste(Stage,"<br>Start:",Start,"<br>",Tasks)))
Ignoring unknown aesthetics: text
ggplotly(p, tooltip = c("text"))
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHBsb3RseSkKCmdldFN0YXJ0cyA8LSBmdW5jdGlvbihkKXsKICBzID0gZCAlPiUgc2VsZWN0KFN0YWdlLCBOb2RlcywgVGltZSwgVGFza3MpICU+JSAKICAgIGdyb3VwX2J5KFN0YWdlLCBOb2RlcykgJT4lIAogICAgc3VtbWFyaXNlKFN0YXJ0PW1pbihUaW1lKSwgVGFza3M9bWluKFRhc2tzKSkgJT4lIGFycmFuZ2UoU3RhcnQpCiAgcmV0dXJuKHMpCn0KYGBgCgpgYGB7cn0KUkVTRUFSQ0hfSE9NRSA9ICIvaG9tZS9hbmQvRG9jdW1lbnRzL1BoRC9SZXNlYXJjaCIKbGluZXMgPSByZWFkTGluZXMocGFzdGUwKFJFU0VBUkNIX0hPTUUsICIvU2NyaXB0cy9NaXNjL3RtcC9tb25pdG9yMi50eHQiKSkKbGluZXMgPSBsaW5lc1tncmVwbCgifCIsIGxpbmVzKV0KbW9uaXRvciA9IGFzX3RpYmJsZShsaW5lcykgJT4lCiAgc2VwYXJhdGUodmFsdWUsIGludG89YygiVGltZXN0YW1wIiwgIlRpbWUiLCAiSUQiLCAiTm9kZXMiLCAiQ29yZXMiLCAiTm9kZSIsICJTdGFnZSIsICJSRERzIiwgIlRhc2tzIiwgIlRpbWVzIiwgIkxvYWQiKSwgc2VwPSJcXHwiKSAlPiUKICBzZXBhcmF0ZShJRCwgaW50bz1jKE5BLCBOQSwgIklEIiksIHNlcD0iLSIpICU+JQogIHNlbGVjdChJRCwgVGltZSwgTm9kZXMsIFN0YWdlLCBSRERzLCBUYXNrcywgTG9hZCkgJT4lCiAgbXV0YXRlKFRpbWU9YXMubnVtZXJpYyhUaW1lKSwgUkREcz1hcy5udW1lcmljKFJERHMpLCBUYXNrcz1hcy5udW1lcmljKFRhc2tzKSwgTG9hZD1hcy5udW1lcmljKExvYWQpKSAlPiUKICBncm91cF9ieShJRCwgVGltZSwgTm9kZXMsIFN0YWdlKSAlPiUgc3VtbWFyaXNlKFJERHM9bWVhbihSRERzKSwgVGFza3M9bWVhbihUYXNrcyksIExvYWQ9bWVhbihMb2FkKSkKYGBgCgpgYGB7cn0KZCA9IG1vbml0b3IgJT4lIGZpbHRlcihJRCA9PSAiMDA1MSIgfHwgSUQgPT0gIjAwNTIiIHx8IElEID09ICIwMDUzIikgJT4lIHVuZ3JvdXAgJT4lIAogIHNlbGVjdChUaW1lLCBUYXNrcywgTm9kZXMsIFN0YWdlKSAlPiUgCiAgbXV0YXRlKFN0YWdlPWZhY3RvcihTdGFnZSksIE5vZGVzPWZhY3RvcihOb2RlcyksIFRpbWU9Zmxvb3IoVGltZSoxMC4wKS8xMC4wKSAlPiUgCiAgZ3JvdXBfYnkoTm9kZXMsIFN0YWdlLCBUaW1lKSAlPiUKICBzdW1tYXJpc2UoVGFza3M9bWVhbihUYXNrcykpICU+JQogIGFycmFuZ2UoVGltZSwgVGFza3MpIAoKaGVhZChkLCBuPTMwKQpgYGAKCmBgYHtyfQpwID0gZ2dwbG90KGRhdGEgPSBkLCBhZXMoeCA9IFRpbWUsIHkgPSBUYXNrcywgZ3JvdXAgPSAxKSkgKwogIGdlb21fbGluZShhZXMoY29sb3IgPSBOb2RlcywgbGluZXR5cGUgPSBOb2RlcykpICsKICBnZW9tX3BvaW50KGRhdGEgPSBnZXRTdGFydHMoZCksIGFlcyh4PVN0YXJ0LCB5PVRhc2tzLCBncm91cD1Ob2RlcywgY29sb3I9Tm9kZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHRleHQgPSBwYXN0ZShTdGFnZSwiPGJyPlN0YXJ0OiIsU3RhcnQsIjxicj4iLFRhc2tzKSkpCmBgYAoKYGBge3J9CmdncGxvdGx5KHAsIHRvb2x0aXAgPSBjKCJ0ZXh0IikpCmBgYAoKCg==